package com.atguigu.bigdata.scala.chapter07

object Scala10_Collection_Method_4 {

    def main(args: Array[String]): Unit = {

        // TODO 集合 - 功能方法
        val list = List(1,2,3,4)

        // List【1，2，3，4】
        // => function
        // List【2，4，6，8】
//        val newList = ListBuffer[Int]()
//        list.foreach(
//            num => {
//                newList.append(num * 2)
//            }
//        )
//        println(newList)

        // 将集合中的每一个元素乘以2，将新的数据封装到一个集合返回
        // 实现原理其实就是将每一个元素 转换成 元素*2
        // TODO map : 映射，转换 , A=>B
        // map方法需要传递一个参数，这个参数是函数类型：Int(A)=>B
        def mapFunction( num:Int ): Int = {
            // 这里的num参数其实就是集合中的每一条数据
            num * 2
        }

        // 集合中的每一条数据都会被map函数进行处理，然后将处理后的结果返回
        val ints: List[Int] = list.map(mapFunction)
        println(ints)

        // 将字符串的首写字母返回
        val list1 = List(
            "Hello", "Scala", "World", "Flume"
        )

        // Hello => H
        // Scala => S
        // World => W
        // Flume => F
//        def mapFunction1(s:String): String = {
//            s.substring(0,1)
//        }

        //val strings: List[String] = list1.map(mapFunction1)
        //println(strings)

        // 使用匿名函数简化操作
//        list1.map(
//            (s:String) => {
//                s.substring(0,1)
//            }
//        )
//        list1.map((s:String) => {s.substring(0,1)})
//        list1.map((s:String) => s.substring(0,1))
//        list1.map((s) => s.substring(0,1))
//        list1.map(s => s.substring(0,1))
        println(list1.map(_.substring(0, 1)))

    }
}
